import pulp
#第一步：定义模型
model = pulp.LpProblem(name="My-Model", sense=pulp.LpMaximize)
#这个操作是使用 pl.LpProblem 创建了一个模型并赋值给变量 model，接收两个参数：

# 第二步：定义决策变量。
# 一般情况下遇到的线性规划问题中，自变量都比较多
# 用下面的方法可以方便快速定义较多决策变量：
x = {i: pulp.LpVariable(name=f"x{i}", cat=pulp.LpBinary) for i in range(1, 11)}
#用一个for循环写成range(1,11)实际上就包含了我们的x1到x10的这10个决策变量。

#   第三步：添加约束条件
model += (6*x[1]+3*x[2]+4*x[3]+5*x[4]+x[5]+2*x[6]+3*x[7]+5*x[8]+4*x[9]+2*x[10] <= 30,'ineq1')
# 总重量不超过30

#   第四部：添加目标函数
model += 540*x[1]+200*x[2]+180*x[3]+350*x[4]+60*x[5]+150*x[6]+280*x[7]+450*x[8]+320*x[9]+120*x[10]

#   第五步：模型求解——很简单，就一句话
status = model.solve()
#   就写这一句话，调用 model 的 solve() 方法，并把结果保存在 status 中。

#   第六步：打印结果
print(f"status: {model.status}, {pulp.LpStatus[model.status]}")
print(f"objective: {model.objective.value()}")
for var in model.variables():
    print(f"{var.name}: {var.value()}")
for name, constraint in model.constraints.items():
    print(f"{name}: {constraint.value()}")
